﻿// work.cpp 
///课程地址 http://cpp.show
#include <iostream>
using namespace std;
int main()
{
    int Y { 0 };
    int U { 0 };
    int V { 0 };
    int R { 0 };
    int G { 0 };
    int B { 0 };

    // 以下问题未处理
    // 如果计算出来的 RGB或者YUV 分量 小于 0 , 则 取 0 值 ;
    // 如果计算出来的 RGB或者YUV 分量 大于 255, 则 取 255;

    ///////////////////////////////////////////////////////////
    ///YUV转为RGB

    cout << "请输出 Y U V以空格分开" << endl;
    cin >> Y >>U >> V;
    cout << "Y:" << Y << " U:" << U << " V:" << V << endl;

    R = Y + 1.13983 * (V - 128);
    G = Y - 0.39465 * (U - 128) - 0.58060 * (V - 128);
    B = Y + 2.03211 * (U - 128);

    cout << "R:" << R << " G:" << G << " B:" << B << endl;


    ///////////////////////////////////////////////////////////
    ///RGB转为YUV
    cout << "请输出 R G B以空格分开" << endl;
    cin >> R >> G >> B;
    cout << "R:" << R << " G:" << G << " B:" << B << endl;

    Y = 0.299 * R + 0.587 * G + 0.114 * B;
    U = -0.14713 * R - 0.28886 * G + 0.436 * B + 128;
    V = 0.615 * R - 0.51498 * G - 0.10001 * B + 128;

    cout << "Y:" << Y << " U:" << U << " V:" << V << endl;
}
